package ace.tool.generate.code.impl.service.model.input;

import jakarta.annotation.Nullable;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author caspar
 * @date 2024/1/11 9:19
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GenerateModelFieldInput {

  /**
   * 字段名称
   */
  @NotEmpty private String name;

  /**
   * 字段备注
   */
  @Builder.Default private String remark = "";

  /**
   * 字段备注 详细描述部分
   */
  @Builder.Default private String remarkNotes = "";

  /**
   * java 字段comment
   */
  @Builder.Default private String javaComment = null;

  /**
   * 字段类型
   */
  @NotNull private Class type;

  /**
   * id字段
   */
  @Builder.Default private Boolean idFlag = false;

  /**
   * 数据库 是否可空
   */
  @Builder.Default private Boolean nullable = Boolean.FALSE;

  /**
   * 默认值
   */
  @Builder.Default private String defaultValue = null;

  /**
   * 数据库类型 默认 VARCHAR(255)
   */
  @Builder.Default private String dbType = null;

  /**
   * 最大长度
   * 字符串类型： 用于验证最大长度
   */
  @Builder.Default private Integer maxLength = 255;

  /**
   * 字段关联的枚举
   */
  @Nullable private GenerateEnumInput enums;

  /**
   * 是否添加逻辑删除注解
   */
  @Nullable private Boolean enableLogicDeleteAnnotation = false;
}
